تریگر مکانیسمی است برای پیاده سازی قاعده فعال و بر اساس مدل ECA (Event-Condition-Action) در سیستم های رابطه ای ارائه شده است . تریگر یک رویه ذخیره شده است که در واکنش به یک تغییر مشخص در پایگاه داده ها توسط سیستم فراخوانده می شود . بنابراین راه انداز مکانیسمی است برای کنترل جامعیت پایگاه داده ها از طریق انجام خودکار عملیات منتشر شونده .
مزایای تریگرها :
• اجرای آن تحت کنترل متمرکز است ( سیستم یا مدیر پایگاه داده )
• نیازی به اعمال محدودیت ها در برنامه کاربردی نیست .
• در معماری پایگاهی مشتری / خدمتگزار و بطور کلی در معماری پایگاه داده های توزیع شده بسیار سودمند است .
کاربردهای تریگر :
1- اعمال محدودیت های جامعیتی .
2- اعمال قواعد ایمنی مبتنی بر مقادیر .
3- درج رکوردها در فایل ثبت .
4- بهنگام سازی منتشر شونده ( بویژه در پایگاه داده های توزیع شده وقتی چند نسخه از داده داشته باشیم ) .
5- ساختن ( و ذخیره کردن ) دید کاربر .
6- اعمال قواعد و فعالیت های محیط کاری .
7- اعمال قواعد مدیریت جریان کاری .
- کاربردهای 1 تا 5 را اصطلاحا کاربردهای داخلی و کاربردهای 6 و 7 را کاربردهای خارجی گویند .
تعریف تریگر در SQL3
CREATE TRIGGER name
{BEFOR | AFTER | UPDATE OF column}
ON TABLE name [ORDER value]
[REFERENCING {NEW | OLD | NEW-TABLE | OLD-TABLE } AS name]
{WHEN condition(n)}
(SQL3 procedure
[FOR EACH {ROW | STATEMENT}])
مشکلات تریگر :
1. وجود تریگرهای بازگشتی ، یعنی نوعی تریگر که اجرای آن منجر به فعال کردن خود تریگر می شود .
2. ترتیب غیرقابل پیش بینی برای اجرای تریگرها وقتی که مجموعه ای از تریگرها باید اجرا شوند .
3. وجود زنجیره تریگرها،یعنی اجرای یک تریگر سبب اجرای تریگر دیگری می شود. در عمل طراحان سیستم های کاربردی بزرگ چندان تمایلی به استفاده از تکنیک تریگرها ندارند ، زیرا این تکنیک بویژه در سیستم های کاربردی بزرگ ، مشکلاتی را ایجاد میکند .
برخی از این مشکلات عبارتند از :
الف) عدم امکان بیان ECA ها (Event-Condition-Action) بطور مستقیم در برخی موارد ، که خود ناشی از محدودیت زبان هایی است که برای نوشتن تریگر در سیستم های پایگاه داده ها وجود دارد.
ب) بروز مشکلات ایمنی پایگاه داده ها و کاهش قابلیت اطمینان سیستم کاربردی .
ج) تاثیر منفی در کارایی سیستم کاربردی ، بویژه جدایی بین تراکنش ها و تریگرها ، بهینه سازی سراسری برنامه کاربردی را با مشکل مواجه می کند .
4. کاستی های تریگرها در سیستم های رابطه ای :
الف) امکان تعریف داده های پیچیده وجود ندارد .
ب) دستیابی مستقیم به زبان های برنامه نویسی و یا به سیستم عامل زیرین امکان پذیر نیست .
پ) تنها مقادیر اتومیک را می توان به عنوان پارامتر به رویه ذخیره شده داد .
ت) یک تریگر را نمی توان روی بیش از یک رابطه (جدول) اعمال کرد .
ج) اگر روی یک رابطه ، تریگر جدیدی با همان عملیات که در تریگر قبلی وجود دارد ، تعریف شود، تریگر قبلی جایگزین می شود و اخطاری هم داده نمی شود .
د) رویداد نمی تواند نامدار باشد و دوباره به کار برده شود .
ه) امکان تعریف رویداد مرکب وجود ندارد .
منبع :
http://pcpedia.ir/ViewArticle.aspx?ID=152
لیست کل یادداشت های این وبلاگ